/**
 * promise是ES6提供的一个对象,此对象是构造函数，可以获取异步操作的信息。
 * 
 * promise 一个容器， 里面保存着未来才会触发的事件（异步操作的结果）
 * 
 * promise有三种状态：pending(进行中)  fulfilled(已完成)  rejected(已失败)
 * 
 * pending --- >  fulfilled
 * 
 * pending ----> rejected
 * 
 * new Promise((reslove,reject) => {
 *      reslove() //成功
 * 
 *      reject() //失败
 * })
 * 
 * //方法：
 * 
 * Promise.prototype.then(成功的函数，失败的函数)  
 * 
 * Promise.prototype.catch(ck) ：用于发生错误时的回调函数
 * 
 * Promise.prototype.finally(ck):不管promise最后状态如何，都会执行
 * 
 */

let p = new Promise((reslove,reject) => {
    reject("进行中 ---> 失败");
})

p.then((res) => {
    console.log(res);
}).catch((error) => {
    console.log(error)
}).finally(() =>{
    console.log('end');
})

//应用 ajax请求

function ajax(url){
    return new Promise((reslove,reject) => {
        let xhr = new XMLHttpRequest();
        xhr.open('GET',url);

        xhr.send(null);

        xhr.onreadystatechange = () => {
            if(xhr.readyState != 4) return;
            if(xhr.status === 200){
                reslove(xhr.responseText);
            }else{
                reject(new Error('error'))
            }
        }
    })
}







